<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--   获取绝对路径 -->
<c:set var="ctx" value="${pageContext.request.contextPath }" />
<%@ include file="/common/include/include.jsp"%>
</head>
<body>

	<div id="content-container">
		<%@ include file="/common/include/pageTitleBread.jsp"%>
		<div id="page-content">
			<div class="col-sm-2 eq-box-sm">
				<div class="panel lion-fullHeight">
					<div class="panel-body">
						<ul id="treeDemo" class="ztree"></ul>
					</div>
				</div>
			</div>
			<div class="col-sm-10 eq-box-sm">
				<div class="panel lion-fullHeight">
					<div class="panel-body">
						<shiro:hasPermission name="admin:depart:save"> 
							<a id="add" class="btn btn-info data-toolbar"
								onclick="doPjax('${ctx }/admin/department/save')"
								href="javascript:void(0);"><i class="demo-pli-add"></i> 添加</a> 
						</shiro:hasPermission>
						<shiro:hasPermission name="admin:depart:delete"> 		
							<a	id="del" class="btn btn-danger data-toolbar" onclick="delSel()"
								href="javascript:void(0);"><i class="demo-pli-cross"></i>
								批量删除</a>
						</shiro:hasPermission>	    
						<table id="pageTable" class="demo-add-niftycheck"
							data-toolbar="#add,#del" data-search="true"
							data-show-refresh="true" data-show-toggle="true"
							data-show-columns="true" data-sort-name="id"
							data-page-list="[5, 10, 20]" data-page-size="5"
							data-pagination="true" data-show-pagination-switch="true"
							data-toggle="table">
						</table>
					</div>
				</div>
			</div>

		</div>
		
		
		
		
		<!-- 分页表格 -->
		<script>
			var orgid = '';
			
			//定义列
			var col = [
					{
						field : 'checked',
						checkbox : true,
						align : 'center'
					},
					{
						field : 'id',
						title : 'id',
						align : 'center'
					},
					{
						field : 'name',
						title : '机构名称',
						align : 'center'
					},
					{
						field : 'area',
						title : '所属区域',
						align : 'center'
					},
					{
						field : 'type',
						title : '机构类型',
						align : 'center'
					},
					{
						field : 'parent_name',
						title : '父级机构',
						align : 'center'
					},
					{
						field : 'control',
						title : '操作',
						align : 'center',
						width : '440',
						formatter : function(value, row, index) {
							//通过formatter可以自定义列显示的内容
							//value：当前field的值，即id
							//row：当前行的数据
							var a = '<shiro:hasPermission name="admin:depart:save"><a class="label label-table label-info" onclick="doPjax(\''
									+ ctx
									+ '/admin/department/save?parentid='
									+ row.id
									+ '\')" href="javascript:void(0);" >添加下级机构</a>&nbsp;</shiro:hasPermission>';
							a = a
									+ '<shiro:hasPermission name="admin:depart:update"><a class="label label-table label-success" onclick="doPjax(\''
									+ ctx
									+ '/admin/department/update?id='
									+ row.id
									+ '\')" href="javascript:void(0);" >编辑</a>&nbsp;</shiro:hasPermission>';
							a = a
									+ '<shiro:hasPermission name="admin:depart:delete"><a class="label label-table label-danger" onclick="del(\''
									+ row.id
									+ '\')" href="javascript:void(0);" >删除</a></shiro:hasPermission>';
							return a;
						}
					} ];
			
			//定义表格
			var opt = {
				//请求方法
				method : 'post',
				//是否显示行间隔色
				striped : true,
				//是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）     
				cache : false,
				//是否显示父子表
				detailView: false,
				//是否显示分页（*）  
				pagination : true,
				//初始化加载第一页，默认第一页
			    pageNumber: 1,//默认加载页  
			    pageSize: 4,//每页数据  
		        pageList: [2, 4, 6, 8],//可选的每页数据  
				//这个接口需要处理bootstrap table传递的固定参数,并返回特定格式的json数据  
				url : ctx + "/admin/department/listData",
				//默认值为 'limit',传给服务端的参数为：limit, offset, search, sort, order Else
				////查询参数,每次调用是会带上这个参数，可自定义
				//此方法用于传递分页数据到后台
				//也可以传递例如搜索条件等业务逻辑参数到后台
				
				queryParams : function(params) {
					return {
						//startDate: $("#txtStartDate").val(),搜索条件
						//params为一个对象，里面存储着limit（每页显示的数据条数），offset（当前页码）等数据，
						//可以通过params点出来
						 //这里的键的名字和控制器的变量名必须一致，这边改动，控制器也需要改成一样的
						pageNumber : params.offset,//传递当前页码
						pageSize : params.limit,//传递每页显示的数据条数
						parentmentId:orgid
					};
				},
				//分页方式：client客户端分页，server服务端分页（*）
				sidePagination : "server",
				//是否显示搜索
				search : false,
				//引入列格式
				columns : col,
			};

			//初始化表格
			function initTable() {
				$('#pageTable').bootstrapTable(opt);
				//隐藏id列
				$('#pageTable').bootstrapTable('hideColumn', 'id');
			}
			
			initTable();
			
			//刷新表格
			function refreshTable() {
				$("#pageTable").bootstrapTable('refresh', opt);
				//隐藏id列
				$('#pageTable').bootstrapTable('hideColumn', 'id');
			}

		</script>


		
		<!-- 动态生成树形图 -->
		<script>
		
			$(document).ready(function() {
				initFullHeight();//初始化高度
				onloadZTree();//加载树形图
			});
			//设置树形图的各个属性
			var setting = {
				//是否异步
				async : {
					enable:true,
				},
				//树形显示节点，不设置这个属性，便不会区分父节点和子节点
				data: {
					simpleData: {
						enable: true
					}
				},
				//回调函数，这里设置了节点单击事件,noClick属性的值要与自定义的处理单击事件的函数值一致
				callback : {
					onClick : onClick
				}
			};

			//加载ztree  
			function onloadZTree() {
				var ztreeNodes;
				$.ajax({
					async : true, //是否异步  
					cache : false, //是否使用缓存  
					type : 'post', //请求方式,post  
					dataType : "json", //数据传输格式  
					url : "${ctx }/admin/department/getDepartmentTree", //请求链接  
					error : function() {
						alert('亲，网络有点不给力呀！');
					},
					success : function(data) {
						ztreeNodes = eval("[" + data + "]"); //将string类型转换成json对象
						$.fn.zTree.init($("#treeDemo"), setting, ztreeNodes);
						//获取这个数的对象，treeDemo与这棵树的id相对应
						var treeObj = $.fn.zTree.getZTreeObj("treeDemo");
						//表示 展开 全部节点
						treeObj.expandAll(true);
					}
				});
			};
			//单击节点后触发的函数，其中treeNode包含了整个节点的信息，例如id、pid、level、name等
			function onClick(event, treeId, treeNode, clickFlag) {
				 orgid = treeNode.id;
				 debugger;
				 //刷新表格
				 refreshTable();
			}
			
			</script>
			
		<!-- 删除和批量删除自定义函数 -->		
		<script>
			//删除
			function del(idsArr) {
				
				var ids=[];
				if(idsArr instanceof Array)
					ids=idsArr;
				else
					ids.push(idsArr);
				
				pointLion
						.confimMsg(
								"您是否要删除所选信息 ?<br/> 点击确认进行删除 , 点击取消取消该操作",
								null,
								function() {
									//执行删除
									var data = common_ajax.ajaxFunc(
											"/admin/department/delete", {
												idsArr:ids
											}, "json", null);
									
									//删除结果
									if (data.success) {
										pointLion
												.alertMsg(
														data.message,
														"success",
														null,
														function() {
															doPjax(ctx
																	+ '/admin/department/getListPage');//跳转到列表页
														});
									} else if(data==""){
										pointLion.alertMsg("您无删除该机构信息的权限","danger", null, null);
									}else{
										pointLion.alertMsg(data.message,"danger", null, null);
									}
								});
			};
			//批量删除
			function delSel() {
				
				var data = new Array();
				
				
				//获取所有选中部门机构的id,并存入data，用于提交给后台
		        $.map($("#pageTable").bootstrapTable('getSelections'), function(row) {
		            	data.push(row.id);
		            });

				
				if (data.length == 0) {
					pointLion.alertMsg("请选择要删除的数据!", "danger", null, null);
					return;
				}
				del(data);//执行删除
			}
		</script>
	</div>
</body>
</html>
